﻿/*
    PerstSyncProvider
    Copyright (C) 2011 Mikolas Bingemer, MediFox GmbH

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    MA 02110-1301  USA.
 */

using System;
using System.Diagnostics;
using System.Reflection;

namespace MediFox.Synchronization.ClientServices.PerstSyncProvider
{
    public static class Logger
    {
        private static string _dateTimeFormat = "HH:mm:ss.fffffff";

        public static string DateTimeFormat
        {
            get
            {
                return _dateTimeFormat;
            }
            set
            {
                if (string.IsNullOrEmpty(value))
                {
                    throw new ArgumentException("DateTimeFormat must not be null or empty");
                }
                _dateTimeFormat = value;
            }
        }

        [Conditional("DEBUG")]
        public static void Log(string message)
        {
            System.Diagnostics.Debug.WriteLine("{0} {1}",
                DateTime.Now.ToString(_dateTimeFormat),
                message
                );
        }

        [Conditional("DEBUG")]
        public static void Log(MethodBase method)
        {
            System.Diagnostics.Debug.WriteLine("{0} {1}.{2}",
                DateTime.Now.ToString(_dateTimeFormat),
                method.DeclaringType,
                method.Name
                );
        }

        [Conditional("DEBUG")]
        public static void Log(MethodBase method, string message)
        {
            if (method == null)
            {
                throw new ArgumentNullException("method");
            }

            System.Diagnostics.Debug.WriteLine("{0} {1}.{2} {3}",
                DateTime.Now.ToString(_dateTimeFormat),
                method.DeclaringType,
                method.Name,
                message
                );
        }
    }
}
